/*
 * Copyright 2014 Щекотова Ангелина Александровна.
 * Этот файл — часть J4JClientServer Framework
 * J4JClientServer Framework - свободная программа: вы можете перераспространять ее и/или изменять
 * ее на условиях Меньшей Стандартной общественной лицензии GNU в том виде, в каком
 * она была опубликована Фондом свободного программного обеспечения; либо
 * версии 3 лицензии, либо (по вашему выбору) любой более поздней версии.
 *
 * J4JClientServer Framework распространяется в надежде, что она будет полезной,
 * но БЕЗО ВСЯКИХ ГАРАНТИЙ; даже без неявной гарантии ТОВАРНОГО ВИДА
 * или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННЫХ ЦЕЛЕЙ. Подробнее см. в Меньшей Стандартной
 * общественной лицензии GNU.
 *
 * Вы должны были получить копию Меньшей Стандартной общественной лицензии GNU
 * вместе с этой программой. Если это не так, см.
 * <http://www.gnu.org/licenses/>.
 */

package ru.java4java.ClientServerFramework.impl;

import ru.java4java.ClientServerFramework.interfaces.PacketReader;
import ru.java4java.utils.ClosingUtils;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;

public class BytePacketReader implements PacketReader {

    private InputStream in;

    @Override
    public void setInputStream(InputStream in) {
        this.in = in;
    }

    @Override
    public InputStream getInputStream() {
        return in;
    }

    @Override
    public Packet readPacket() throws IOException {
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        int b;
        while ( -1 < (b = in.read())) {
            out.write(b);
        }
        return new Packet(out.toByteArray());
    }

    @Override
    public void close() {
        ClosingUtils.close(in);
    }
}
